/**
 * 找出1000以内的所有完数，并输出其因子。
 * 一个数若刚好等于它的各因子之和，即称其为完数。
 * 例如，6=1+2+3，其中1,2,3是因子，6为因子之和。
 * 其中判断一个数是否为完数以及打印输出通过函数实现。
 * 输出格式为：
 * 1=1
 * 6=1+2+3
 * 28=1+2+4+7+14
 */

#include <stdio.h>
/**
 * 1. 得先判断是不是完数
 * 2. 是的话就按照要求格式输出，不是就+1判断下一个数
 */

// 判断num是不是完数，是就返回1，不是返回0
int judgeNumber(int num)
{
    int sum = 1;
    for (int i = 2; i < num; i++ )
    {
        if ( num % i == 0)
            sum += i;
    }
    return num == sum ? 1 : 0;
}

// 输出完数，这里得输入num是完数
void outputNumber(int num)
{
    int sum = 0;
    printf("%d = 1", num);
    for (int i = 2; i < num && sum < num; i++ )
    {
        if (num % i == 0)
        {
            sum += i;
            printf(" + %d", i);
        }
    }
    printf("\n");
}

int main()
{
    for (int i = 1; i <= 1000; i++)
    {
        if (judgeNumber(i))
        {
            outputNumber(i);
        }
        
    }
    return 0;
}